home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SPACE 1
/
SPACE - Library 1 - Volume 1.iso
/
utilitys
/
93
/
makersh
/
graphics.c
< prev
next >
Wrap
C/C++ Source or Header
|
1987-10-12
|
5KB
|
187 lines
/*
This program may be freely
distributed , copied,and modified so long
as a fee is not charged. However,
I reserve all rights available to
me under The Copyright Act.
If you find any bugs please feel free to contact me.
David DeGeorge
Princeton,New Jersey
March 1987
USENET: ....princeton!idacrd!dld
COMPUSERVE: 74176,3210
GENIE: DEGEORGE
*/
#ifdef GEM /* if not defined compiles into nothing */
#include "makersh.h"
#include <vdibind.h>
#include <aesbind.h>
#include <osbind.h>
static *labels[]={
"strings ",
"objects ",
"images ",
"bitblocks ",
"iconblks ",
"tedinfos ",
"trees ",
"free strgs",
"free imgs "
};
#define NITEM 9
typedef struct ditem {
char *label;
GRECT rect;
int *nptr;
} ITEM;
ITEM items[NITEM];
#define XOFFSET (2*8 + 2)
#define YOFFSET (3*8 + 1)
#define WIDTH 60*8
#define SPACE 1*8
#define HITE 1*8
static int lenstrs;
static int lenimg;
makeitems()
{
int i;
lenstrs = rheader.rsh_imdata - rheader.rsh_string;
lenimg = rheader.rsh_nbb + 2*(rheader.rsh_nib);
items[0].nptr = &lenstrs;
items[1].nptr = &rheader.rsh_nobs;
items[2].nptr = &lenimg;
items[3].nptr = &rheader.rsh_nbb;
items[4].nptr = &rheader.rsh_nib;
items[5].nptr = &rheader.rsh_nted;
items[6].nptr = &rheader.rsh_ntree;
items[7].nptr = &rheader.rsh_nstring;
items[8].nptr = &rheader.rsh_nimages;
for ( i = 0 ; i < NITEM ; i++)items[i].label = labels[i];
for ( i = 0 ; i < NITEM ; i++) {
items[i].rect.g_x = XOFFSET + 8*(strlen(items[i].label)+1);
items[i].rect.g_y = YOFFSET + i*(HITE + SPACE) ;
items[i].rect.g_w = WIDTH;
items[i].rect.g_h = HITE;
}
}
display()
{
int i,hin,vin ;
int pxy[4];
v_hide_c(handle);
v_clrwk(handle);
hin = 0;
vin = 3;
vst_alignment(handle,hin,vin,&i,&i);
pxy[0] = 8;
pxy[1] = 8;
pxy[2]= 631;
pxy[3] = 191;
vsf_perimeter(handle,1);
vsf_interior(handle,2);
vsf_style(handle,IP_1PATT);
vsf_color(handle,GREEN);
v_bar(handle,pxy);
vsf_interior(handle,IP_HOLLOW);
vsf_color(handle,RED);
vst_color(handle,BLACK);
for ( i = 0 ; i < NITEM ; i++ ) {
char temp[80];int pxy[4];int t1;
if( *(items[i].nptr) == 0)
vst_effects(handle,2); /* shadowed */
else
vst_effects(handle,0);
t1 = items[i].rect.g_y+items[i].rect.g_h;
vswr_mode(handle,2);
v_gtext(handle,XOFFSET,t1,items[i].label);
vswr_mode(handle,1);
vsf_interior(handle,2);
vsf_style(handle,22);
vsf_color(handle,GREEN);
pxy[0] = items[i].rect.g_x;
pxy[1] = items[i].rect.g_y;
pxy[2] = items[i].rect.g_x + items[i].rect.g_w;
pxy[3] = items[i].rect.g_y + items[i].rect.g_h;
v_bar(handle,pxy);
sprintf(temp,"%d",*(items[i].nptr));
vswr_mode(handle,2);
v_gtext(handle,pxy[2] + 8,t1,temp);
vswr_mode(handle,1);
}
}
progress(i,num)
int i ; /* item number */
int num;
{
int todo,pxy[4];
long inc ;
pxy[0] = items[i].rect.g_x;
pxy[1] = items[i].rect.g_y;
pxy[3] = pxy[1] + items[i].rect.g_h;
todo = *(items[i].nptr);
inc = ( WIDTH * (long)num)/(long)todo;
pxy[2] = pxy[0] + (int)inc;
vsf_perimeter(handle,0);
vsf_color(handle,RED);
vsf_interior(handle,2);
vsf_style(handle,3);
v_bar(handle,pxy);
}
imgprog(num) /* This is special because non free images are made
at various places */
int num;
{
int pxy[4];
int todo,inc;
pxy[0] = items[2].rect.g_x;
pxy[1] = items[2].rect.g_y;
pxy[3] = pxy[1] + items[2].rect.g_h;
todo = *(items[2].nptr) ;
inc = (WIDTH * num)/todo;
pxy[2] = pxy[0] + inc;
vsf_color(handle,RED);
vsf_interior(handle,2);
vsf_style(handle,3);
v_bar(handle,pxy);
}
open_work()
{ int i;
appl_init();
handle = graf_handle(&i,&i,&i,&i);
for ( i=0 ; i <10 ; work_in[i++]=1 );
work_in[10]=2;
v_opnvwk(work_in,&handle,work_out);
}
close_work()
{
v_clsvwk(handle);
appl_exit();
}
flee()
{
vst_color(handle,RED);
vst_effects(handle,1); /* bold face */
v_gtext(handle,XOFFSET,184,"PRESS ANY KEY TO EXIT");
Bconin(2);
leave();
}
#endif